﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Bussiness.Manager;
using Bussiness.Entity;
namespace DSC
{
    public partial class frmMotorGroup : AfChildrenForm
    {
        public string infoBeforeChange { set; get; }
        public frmMotorGroup()
        {
            InitializeComponent();
            // Load thứ tự của loại xe
            txtThuTu.Value = (decimal)PT_HondaModelGroupManager.CreateInstant().GetOrderNo();
        }
        public frmMotorGroup(int _ModelCode, bool _IsEdit)
        {
            ModelCode = _ModelCode;
            IsEdit = _IsEdit;
            InitializeComponent();
            if (IsEdit)
                LoadEdit();
            else
            { 
                // Load thứ tự của loại xe
                txtThuTu.Value = (decimal)PT_HondaModelGroupManager.CreateInstant().GetOrderNo();
            }
        }

        public bool IsEdit { set; get; }
        public int ModelCode { set; get; }
        public int OrderIndex { set; get; }
        public void LoadEdit()
        {
            PT_HondaModelGroupEntity obj = PT_HondaModelGroupManager.CreateInstant().GetByGroupCode(ModelCode);
            if (obj != null)
            {
                txtLoaixe.Text = obj.GroupName;
                txtThuTu.Value = obj.OrderIndex;
                checkActive.Checked = obj.IsActive;
                OrderIndex = obj.OrderIndex;
                this.Text = "Sửa Nhóm xe";
            }
            infoBeforeChange = GetInfo();
        }
        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private bool CheckInput()
        {
            string error = "";
            if (string.IsNullOrEmpty(txtLoaixe.Text.Trim()))
            {
                error += "- Nhóm xe\r\n";
            }
            if (!string.IsNullOrEmpty(error))
            {
                MessageBox.Show("Vui lòng điền đầy đủ các thông tin sau:\r\n" + error);
                return false;
            }

            PT_HondaModelGroupEntity optionAdd = new PT_HondaModelGroupEntity();
            optionAdd.GroupName = txtLoaixe.Text.Trim();
            optionAdd.IsDeleted = false;
            List<PT_HondaModelGroupEntity> lst = PT_HondaModelGroupManager.CreateInstant().SelectWithConditionLST(optionAdd);
            if (lst!=null && lst.Count > 0)
            {
                if (lst[0].GroupCode != ModelCode)
                {
                    MessageBox.Show("Tên nhóm xe đã tồn tại, vui lòng nhập tên nhóm xe khác.");
                    return false;
                }
            }

            if (!IsEdit)
            {
                PT_HondaModelGroupEntity option = new PT_HondaModelGroupEntity();
                option.OrderIndex = (int)txtThuTu.Value;
                option.IsDeleted = false;
                DataTable dt = PT_HondaModelGroupManager.CreateInstant().SelectWithCondition(option);
                if (dt.Rows.Count > 0)
                {
                    MessageBox.Show("Thứ tự hiển thị đã tồn tại. Vui lòng chọn thứ tự hiển thị khác.");
                    return false;
                }
            }
            if (IsEdit && checkActive.Checked==false)
            {
                PT_HondaModelEntity option = new PT_HondaModelEntity();
                option.GroupCode = ModelCode;
                option.IsDeleted = false;
                option.IsActive = true;
                DataTable dt = PT_HondaModelManager.CreateInstant().SelectWithCondition(option);
                if (dt.Rows.Count > 0)
                {
                    MessageBox.Show("Không thể xóa vì nhóm xe này chứa nhiều loại xe.");
                    return false;
                }
            }
            return true;
        }
        private void SaveInfo()
        {
            if (CheckInput())
            {
                PT_HondaModelGroupEntity obj = new PT_HondaModelGroupEntity();
                obj.GroupName = txtLoaixe.Text.Trim();
                obj.OrderIndex = (int)txtThuTu.Value;
                obj.IsActive = checkActive.Checked;
                obj.IsDeleted = false;
                if (IsEdit == true)
                {
                    obj.GroupCode = ModelCode;
                    obj.UpdatedBy = SessionLogin.UserCode;
                    obj.UpdatedDate = DateTime.Now;

                    // neu thay doi thu tu hien thi cua group bang thu tu cua mot model khac thi hoan doi order no cua hai model nay
                    PT_HondaModelGroupEntity option = new PT_HondaModelGroupEntity();
                    option.OrderIndex = (int)txtThuTu.Value;
                    option.IsDeleted = false;
                    List<PT_HondaModelGroupEntity> lst = PT_HondaModelGroupManager.CreateInstant().SelectWithConditionLST(option);
                    if (lst != null && lst.Count > 0)
                    {
                        PT_HondaModelGroupEntity OtherObj = lst[0];
                        if (OtherObj.GroupCode != ModelCode) 
                        {
                            OtherObj.OrderIndex = OrderIndex;
                            PT_HondaModelGroupManager.CreateInstant().Update(OtherObj);
                        }
                    }

                    if (PT_HondaModelGroupManager.CreateInstant().Update(obj) != null)
                    {
                        MessageBox.Show("Cập nhật thông tin thành công");
                        // history
                        PT_ActionHistoryManager.CreateInstant().SaveHistory(SessionLogin.UserId, "Sửa nhóm xe", infoBeforeChange + " ---- " + GetInfo());
                    }
                    else
                        MessageBox.Show("Cập nhật thông tin không thành công. Vui lòng thử lại");
                }
                else
                {
                    obj.CreatedBy = SessionLogin.UserCode;
                    obj.CreatedDate = DateTime.Now;
                    if (PT_HondaModelGroupManager.CreateInstant().Insert(obj) != null)
                    {
                        MessageBox.Show("Thêm nhóm xe thành công");
                        ResetForm();
                        // history
                        PT_ActionHistoryManager.CreateInstant().SaveHistory(SessionLogin.UserId, "Thêm nhóm xe", GetInfo());
                    }
                    else
                        MessageBox.Show("Thêm nhóm xe không thành công. Vui lòng thử lại");
                }
                RaiseChangeDataEvent();
            }
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            SaveInfo();
        }
        private void ResetForm()
        {
            txtLoaixe.Text = "";
            txtThuTu.Value = 1;
        }
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (keyData == Keys.Escape) // thoat
            {
                this.Close();
                return true;
            }
            if (keyData == Keys.F5) // Luu thong tin
            {
                SaveInfo();
                return true;
            }
            return base.ProcessCmdKey(ref msg, keyData);
        }
        private string GetInfo()
        {
            return "Nhóm xe:" + txtLoaixe.Text + "\nThứ tự:" + txtThuTu.Value;
        }
    }
}
